
// 函数限制：主要是限制函数的参数和返回值的类型
// 输入
// 输出


// 一、声明式定义函数：

function fn01(a:number,b:string):boolean{

    return true;
}

fn01(12,"");

// 二、表达式的方式定义函数：

const fn02 = function(a:number):string{
    return "";
}

// 1、定义函数和给函数变量赋值分开写：

// 1）、定义函数
let fn03:(a:number,b:string)=>boolean;

// 2)、给函数变量赋值
fn03 = function(a:number,b:string):boolean{
    return false;
}

// 3)、调用
let t = fn03(12,"");

// t = 12;不行
// t = true;

// 2、定义函数和给函数变量赋值写在一起

let fn04:(a:number,b:string)=>boolean =  function(a:number,b:string):boolean{
    return false;
}

fn04(12,"");

// 三、用接口（interface）的方式定义函数

// 1、定义了一个接口(类型)，接口里写函数的限制（用接口的方式定义函数）
interface IFn{
    (a:number,b:string):void
}

// 2、
let fn05:IFn;

fn05 = function(a:number,b:string):void{
    return;
}

let fn06:IFn;

fn06 = function(a:number,b:string):void{

}


// 四、可选参数：
interface IFn02{
    (a:number,b:string,c?:string):void
}

let fn07:IFn02 = function(a:number,b:string,c?:string):void{

}

fn07(12,"","");


